// symbols
// symbol类型的值是通过Symbol构造函数创建的。
function symbols_eg01() {
  let sym01 = Symbol();
  let sym02 = Symbol('key');
  console.log(sym01, sym02);
  // Symbols是不可改变且唯一的。
  let sym03 = Symbol('key');
  let sym04 = Symbol('key');
  console.log(sym03 == sym04)

  let obj = {
    [sym01]: "value"
  }

  console.log(obj[sym01])

  // Symbols也可以与计算出的属性名声明相结合来声明对象的属性和类成员。
  const getClassNameSymbol = Symbol();
  class C {
    [getClassNameSymbol]() { 
      return "C";
    }
  }

  let c = new C();
  let className = c[getClassNameSymbol]();
  console.log(className)

  Symbol.hasInstance
}

symbols_eg01();